#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 5001;
const int mod = 1000000007;
ll n, m, f[2][maxn][2];
/*
f[i, j, 0] 表示前i个抽屉锁死j个，i不锁死
f[i, j, 1] ......................i锁死

f[1,0,0]=f[1,1,1]=1
f[i,j,0]=f[i-1,j,1]+f[i-1,j,0]
f[i,j,1]=f[i-1,j-1,1]+f[i-1,j,0]
(j > 0)
*/
int main() {
  cin >> n >> m;
  f[1][0][0] = f[1][1][1] = 1;
  for (int i = 2; i <= n; i++) {
    for (int j = 0; j <= i; j++) {
      f[i & 1][j][0] = (f[(i - 1) & 1][j][1] + f[(i - 1) & 1][j][0]) % mod;
      f[i & 1][j][1] = f[(i - 1) & 1][j][0];
      if (j > 0)
        f[i & 1][j][1] = (f[i & 1][j][1] + f[(i - 1) & 1][j - 1][1]) % mod;
    }
  }
  cout << (f[n & 1][m][0] + f[n & 1][m][1]) % mod;
  return 0;
}